﻿#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;

const int N = 100010;
//对组的first中存放区间的左端点，second中存放的是区间的右端点
typedef pair<int, int> PII; 
vector<PII>segs;
int n;

void merge(vector<PII>& segs)
{
	vector<PII>res;//存放区间合并之后的结果

	sort(segs.begin(), segs.end());//先将segs中的区间进行排序，pair对组优先按左端点排序

	int st = -2e9, ed = -2e9;
	/*for (register int i = 0; i < segs.size(); i++)
	{
		auto seg = segs[i];
	}*/
	//for (auto seg : segs) 
	for (register int i = 0; i < segs.size(); i++)
	{
		auto seg = segs[i];
		if (ed < seg.first) //当前区间的右端点小于下一个区间的左端点,表示两个区间没有交集
		{
			if (st != -2e9) res.push_back({ st,ed });//满足条件，将当前区间放入res中
			st = seg.first, ed = seg.second;		 //维护下一个区间
		}
		else //有交集,将右端点改成两个区间较大的一个
		{
			ed = max(ed, seg.second);
		}
	}
	if (st != -2e9)res.push_back({ st,ed });//此处是将最后一个区间放入res中
	segs = res;
}
int main() 
{
	std::cin.tie(0);
	std::ios::sync_with_stdio(false);

	cin >> n;
	for (int i = 0; i < n; i++) 
	{
		int l, r;
		cin >> l >> r;
		segs.push_back({ l,r });
	}
	merge(segs);

	cout << segs.size() << endl;
	return 0;

	system("pause");
	return 0;
};